home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b3.d64 / program109 < prev    next >
Text File  |  2007-02-28  |  2KB  |  67 lines

  1. 0010 // PROGRAM 109
  2. 0020 //
  3. 0030 // COMELY KATE
  4. 0040 //
  5. 0050 // TO SORT A LIST OF NAMES INTO ALPHABETICAL ORDER
  6. 0060 //
  7. 0070 //
  8. 0080 // FIRST SET UP THE LIST
  9. 0090 READ N#
  10. 0100 DIM NAMES$(N#) OF 20
  11. 0110 FOR COUNT#:=1 TO N# DO
  12. 0120 READ NAMES$(COUNT#)
  13. 0130 ENDFOR COUNT#
  14. 0140 //
  15. 0150 // NOW SORT LIST
  16. 0160 //
  17. 0170 SORT(NAMES$,N#)
  18. 0180 //
  19. 0190 PRINT "THE ALPHABETICAL LIST IS :"
  20. 0200 PRINT 
  21. 0210 PRINT 
  22. 0220 FOR COUNT#:=1 TO N# DO
  23. 0230 PRINT NAMES$(COUNT#)
  24. 0240 ENDFOR COUNT#
  25. 0250 DATA 20
  26. 0260 DATA "JOE SOAP","HANDY ANDY","BILLY BONES"
  27. 0270 DATA "DILLY DREAMER","ELLIE ESTER","BERT BRIGHT"
  28. 0280 DATA "JILL BRIGHT","JOEY O'NEILL","TOM JONES"
  29. 0290 DATA "DON CANUTE","MUHAMMAD ALI","JOE LOUIS"
  30. 0300 DATA "BIG JIM","MARCEL MARAT","FREDDIE FEARLESS"
  31. 0310 DATA "GEORGE MERRIMAN","BIG BILL","SMALL BILL"
  32. 0320 DATA "TOM MIX","HOPALONG HOP"
  33. 0330 END 
  34. 0340 //
  35. 0350 PROC SORT(REF LISST$(),N#) 
  36. 0360 DIM TEMP$ OF 20
  37. 0370 REVERSENAMES(LISST$,N#)
  38. 0380 PASS'#:=0
  39. 0390 REPEAT 
  40. 0400 PASS'#:=PASS'#+1
  41. 0410 SWAP:=FALSE
  42. 0420 SCANLENGTH#:=N#-PASS'#
  43. 0430 FOR SCAN#:=1 TO SCANLENGTH# DO
  44. 0440 IF LISST$(SCAN#)>LISST$(SCAN#+1) THEN
  45. 0450 TEMP$:=LISST$(SCAN#)
  46. 0460 LISST$(SCAN#):=LISST$(SCAN#+1)
  47. 0470 LISST$(SCAN#+1):=TEMP$
  48. 0480 SWAP:=TRUE
  49. 0490 ENDIF 
  50. 0500 ENDFOR SCAN#
  51. 0510 UNTIL NOT SWAP OR PASS'#=N#-1
  52. 0520 ENDPROC SORT
  53. 0530 //
  54. 0540 PROC REVERSENAMES(REF LISST$(),N#) 
  55. 0550 DIM LEFTPART$ OF 20, RIGHTPART$ OF 20
  56. 0560 FOR COUNT#:=1 TO N# DO
  57. 0570 POSITION#:=0
  58. 0580 REPEAT 
  59. 0590 POSITION#:=POSITION#+1
  60. 0600 UNTIL LISST$(COUNT#)(POSITION#)=" "
  61. 0610 LEFTPART$:=LISST$(COUNT#)(1:POSITION#)
  62. 0620 LENGTH:=LEN(LISST$(COUNT#))
  63. 0630 RIGHTPART$:=LISST$(COUNT#)(POSITION#+1:LENGTH)
  64. 0640 LISST$(COUNT#):=RIGHTPART$+" "+LEFTPART$
  65. 0650 ENDFOR COUNT#
  66. 0660 ENDPROC REVERSENAMES
  67.